package com.campus.mapper;

import com.campus.annotation.AutoFill;
import com.campus.enumeration.OperationType;
import com.campus.pojo.dto.LabEquipmentPageQueryDTO;
import com.campus.pojo.entity.LabEquipment;
import com.campus.pojo.vo.LabEquipmentVO;
import com.github.pagehelper.Page;
import org.apache.ibatis.annotations.*;
import java.util.List;

@Mapper
public interface LabEquipmentMapper {

    /**
     * 插入实验室设备信息
     * @param labEquipment 实验室设备实体
     */
    @AutoFill(value = OperationType.INSERT)
    @Insert("INSERT INTO lab_equipment (name, lab_id, status, create_time, update_time) VALUES (#{name}, #{labId}, #{status}, #{createTime}, #{updateTime})")
    void insert(LabEquipment labEquipment);

    /**
     * 根据ID查询实验室设备
     * @param id 设备ID
     * @return 实验室设备实体
     */
    @Select("SELECT * FROM lab_equipment WHERE id = #{id}")
    LabEquipment getById(Long id);

    /**
     * 批量删除实验室设备
     * @param ids 设备ID列表
     */
    void deleteByIds(List<Long> ids);

    /**
     * 分页查询实验室设备
     * @param labEquipmentPageQueryDTO 查询条件
     * @return 分页结果
     */
    Page<LabEquipmentVO> pageQuery(LabEquipmentPageQueryDTO labEquipmentPageQueryDTO);

    /**
     * 更新实验室设备信息（动态SQL）
     * @param labEquipment 实验室设备实体
     */
    @AutoFill(value = OperationType.UPDATE)
    void update(LabEquipment labEquipment);

    /**
     * 根据名称查询实验室设备
     * @param name
     * @return
     */
    @Select("SELECT * FROM lab_equipment WHERE name = #{name}")

    LabEquipment getByName(String name);
}
